When a call is received at a call processing center, switching center, or other point of routing, a telephony application often has to make a decision about how to handle the call based on some information related to the call. Often this decision is made based upon a telephone number provided in the call, such as the calling number provided by an automatic number identifier (ANI) or the called number provided by a dialed number identifier service (DNIS). For example, the telephony application may use the ANI to authenticate the caller for the service being provided by the call center, or it may need to look at the DNIS to figure out how or where to route the call. In each of these cases, the telephony application or routing algorithm will need to use the telephone number as a key to perform a database lookup to acquire a routing instruction or other call processing instructions.
In a traditional database, the telephony application may simply query the database for a record that exactly matches the telephone number. Obviously, the time needed to perform such an exact-matched lookup increases with the number of data entries (telephone numbers) in the database, though it may also depend on how efficiently the database indexes the keys which associate a record with a telephone number. Thus, the telephony system will have a trade off between its performance and the scalability of the database application.
Many telephony applications do not require an exact-matched lookup, but rather they require best-pattern matched lookups. For example, a telephony application may only need to find all records for keys which best match an incoming telephone number of “1-555-1007000”, such as “1-555” and “1-555-1”, but not “1-505”. However, a traditional database is not designed for optimal best-pattern matched lookups, and therefore will not provide an efficient means of looking up these records in a single query. The application will usually be burdened with performing many complex queries in order to figure out the best-pattern that matches the given phone number.
Therefore, there exists a need for a method for indexing keys to specified records with an efficient best-pattern matched lookup capability. In particular, there exists a need for a method for indexing a telephony database in a way that supports an efficient best-pattern matched lookup of a routing instruction based on a telephone number.